package com.nep.NEPS.controller;

import com.nep.common.util.ApplicationContextUtil;
import com.nep.common.util.SceneSwitcherUtil;
import com.nep.entity.supervisor.User;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;

import static com.nep.common.util.AlertUtil.*;

/**
 * 公众监督员登录控制器
 * 处理登录表单验证、用户认证和页面导航逻辑
 */
public class SupervisorLoginViewController {
    @FXML private TextField phoneField;       // 手机号输入框
    @FXML private PasswordField passwordField; // 密码输入框
    @FXML private Button loginBtn;            // 登录按钮
    @FXML private Button registerBtn;         // 注册按钮
    @FXML private Button exitBtn;             // 返回主菜单按钮

    /**
     * 初始化方法（由FXML加载器自动调用）
     * 可用于初始化额外的UI绑定或事件监听
     */
    public void initialize() {
        // 初始化逻辑（如有）
    }

    /**
     * 处理登录按钮点击事件
     * 验证输入、调用认证服务并根据结果导航页面
     */
    @FXML
    private void handleLogin() {
        String phone = phoneField.getText();
        String password = passwordField.getText();

        // 输入验证：检查手机号和密码是否为空
        if (phone.isEmpty() || password.isEmpty()) {
            showError("登录失败", "请输入手机号和密码");
            return;
        }

        // 调用用户服务进行登录认证
        User user = ApplicationContextUtil.getInstance().getUserService().login(phone, password);
        if (user != null) {
            // 认证成功：保存用户信息到应用上下文
            ApplicationContextUtil.getInstance().setCurrentUser(user);

            // 根据用户是否绑定网格地址决定跳转逻辑
            if (user.getGridAddress() == null || user.getGridAddress().isEmpty()) {
                // 未绑定网格：跳转到网格选择页面
                SceneSwitcherUtil.switchScene(loginBtn, "/com/nep/NEPS/view/SupervisorGridSelectView.fxml");
            } else {
                // 已绑定网格：跳转到监督员主界面
                SceneSwitcherUtil.switchScene(loginBtn, "/com/nep/NEPS/view/SupervisorMainView.fxml");
            }
        } else {
            // 认证失败：显示错误提示
            showError("登录失败", "用户名或密码错误");
        }
    }

    /**
     * 处理注册按钮点击事件
     * 导航到公众监督员注册页面
     */
    @FXML
    private void handleRegister() {
        SceneSwitcherUtil.switchScene(registerBtn, "/com/nep/NEPS/view/SupervisorRegisterView.fxml");
    }

    /**
     * 处理退出按钮点击事件
     * 返回系统主菜单页面
     */
    @FXML
    private void handleExit() {
        SceneSwitcherUtil.switchScene(exitBtn, "/com/nep/mainMenu/view/MainMenuView.fxml");
    }
}